package com.thx.app.remote.impl;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import mixedserver.protocol.RPCException;

import com.thx.app.remote.UserLoginInter;
import com.thx.app.remote.model.RPCResponse;
import com.thx.app.remote.model.UserInfor_;
import com.thx.app.remote.util.UserLoginUtils;
import com.thx.app.remote.util.UserUtil;

public class UserLoginImpl implements UserLoginInter {// , SessionRelatedModul
  // private JsonRpcSessionAttributes session;

  // public void setSession(SessionAttributes session) {
  // this.session = (JsonRpcSessionAttributes) session;
  // }

  /**
   * 登录接口
   *
   * @param userName 用户名
   * @param pwd 密码
   * @param validator 验证码
   */
  public RPCResponse login(String userName, String pwd, String validator) throws RPCException {
    return UserLoginUtils.login(UserUtil.getRequest().getSession(), userName, pwd);
  }

  /**
   * 用户注册用户名查询 到服务器端判断用户名是否已经注册 parameter 用户名
   */
  public boolean loginUserSearch(String userName) throws RPCException {
    return UserLoginUtils.loginUserSearch(userName);
  }

  /**
   * 用户信息查询 [适用于已登录用户 查询其它用户信息] 条件：校验当前登录人员是否登录 parameter 用户名
   */
  public RPCResponse queryUserSearch(String userName) throws RPCException {
    return UserLoginUtils.queryUserSearch(getSession(), userName);
  }


  /**
   * 得到当前登录用户信息
   */
  public RPCResponse getCurUserInfor() throws RPCException {
    return UserLoginUtils.getCurUserInfor(getSession());
  }

  /**
   * 获取 验证码 接口
   */
  public String getCaptcha() throws RPCException {
    return UserLoginUtils.getCaptcha(getSession());
  }

  /**
   * 发送 短信验证码
   *
   * @param phoneNumber 用户手机号码
   * @param captcha 防恶意刷新 验证码
   * @return
   */
  public boolean sendSmsVerifyCode(String phoneNumber, String captcha) throws RPCException {
    return true;
  }

  /**
   * 用户注册接口 服务器保存注册用户信息，返回注册是否成功
   *
   * @param user 注册用户信息
   * @param captcha 防恶意刷新 验证码 或 短信验证码
   * @return 注册成功 true
   */
  public boolean saveUserInfor(UserInfor_ user, String captcha) throws RPCException {
    return UserLoginUtils.saveUserInfor(getRequest(), user);
  }

  /**
   * 用户修改密码
   *
   * @param userName 用户帐号 或 用户ID
   * @param oldPwd 旧密码
   * @param newPwd 新密码
   * @return 修改成功 true
   */
  public boolean updatePwd(String userName, String oldPwd, String newPwd) throws RPCException {
    return UserLoginUtils.updatePwd(getSession(), userName, oldPwd, newPwd);
  }

  /**
   * 注销
   */
  public void logOut() throws RPCException {
    UserLoginUtils.logOut(getSession());
  }

  /**
   * 上传用户头像信息
   */
  public String sendUserImage(byte[] picStream) throws RPCException {
    return UserLoginUtils.sendUserImage(getSession(), picStream);
  }

  /**
   * 在用户登录成功后更新设备号
   *
   * @param username
   * @param deviceId
   * @param imsi
   * @throws RPCException
   */
  public boolean updateDeviceId(String userName, String deviceId, String imsi) throws RPCException {
    return UserLoginUtils.updateDeviceId(getRequest(), userName, deviceId, imsi);
  }

  private HttpSession getSession() {
    return UserUtil.getRequest().getSession();
  }

  private HttpServletRequest getRequest(){
    return UserUtil.getRequest();
  }


}
